package com.niit.beans;

import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/**
 * Sheep类
 * 
 * @author hanli
 */
//开启包扫描，Spring会扫描添加了以下注解的类，并注册为spring管理的bean
//@Controller, @Repository, @Service, @Component
//@Configuration, @RestController, @ControllerAdivce

//如何在一个bean的初始化阶段和摧毁前执行一些期望执行的操作，方式3：
//3. 在bean对应的类中添加自定义的方法，然后使用@PostConstruct和@PreDestroy注解修饰方法
@Component
public class Sheep {
	
	//这个方法是自定义的，用于执行初始化工作，方法名可以随便起，尽量有意义
	//@PostConstruct注解用于修饰执行初始化工作的方法
	@PostConstruct
	public void init() {
		System.out.println("调用了Sheep类中的init......");
	}
	
	//这个方法是自定义的，用于在bean摧毁前执行一些代码，方法名可以随便起，尽量有意义
	//@PreDestory注解用于修饰bean摧毁前要执行的代码所在的方法
	@PreDestroy
	public void cleanUp() {
		System.out.println("调用了Sheep类中的cleanUp......");
	}

	public Sheep() {
		System.out.println("实例化了Sheep！！！");
	}

	public void eat() {
		System.out.println("这是一只羊，羊吃草……");
	}
}